# -*- encoding:utf-8 -*-
'''
⇥⇥demo.py
⇥⇥=====================
⇥⇥@descript:可以下载QQ音乐，甚至可以下载 VIP QQ音乐

⇥⇥@copyright:chinasoft
⇥⇥@author:LPQWXXHLS
⇥⇥@date: 2020/7/21  21:28
⇥⇥@version:v1.0
'''
# 可以抓包！ 破解JS！！
from selenium import webdriver
from urllib.request import urlretrieve
from tkinter import *
import requests
import option
import json
import re
import os

def get_url():
    name = entry.get()
    # 隐藏浏览器
    option = webdriver.ChromeOptions()
    option.add_argument('--headless')
    driver = webdriver.Chrome(chrome_options=option)
    #获取歌曲网站
    url = 'https://y.qq.com/portal/search.html#page=1&searchid=1&remoteplace=txt.yqq.top&t=song&w={}'.format(name)
    print(url)
    # 解析网站，获取代码
    driver.get(url)
    # 521秒之内 元素加载完毕即可！
    driver.implicitly_wait(521)
    data = driver.find_element_by_xpath('//*[@id="song_box"]/div[2]/ul[2]/li[1]/div/div[2]/span[1]/a').get_attribute('href')
    # 如果我进入网页 下面的歌单没有加载出来 我能够获取数据吗？ time模块是强制等待！
    data = {'mid':data}
    url = 'http://www.douqq.com/qqmusic/qqapi.php'
    # 破解真实的下载网站
    req = requests.post(url, data=data).text
    req = json.loads(req)
    req = req.replace('\/', '/')
    rg = re.compile('"m4a":"(.*?)",')
    rs = re.findall(rg, req)[0]
    # 输出真实的下载网站
    print(rs)
    # 下载
    urlretrieve(rs, './QQ音乐歌单/%s.mp3' % name)
    pass

# 让python自动创建文件夹 方便保存我们抓取的数据
if not os.path.exists('./QQ音乐歌单/'):
        os.mkdir('./QQ音乐歌单/')

# 界面的设计
# 1.创建画布
root = Tk()
# 2.添加标题
root.title('简易音乐下载器')
# 3.设置窗口的大小并且剧中显示
root.geometry('600x217+400+200')
# 4.标签控件
label = Label(root, text='请输入歌曲名称：', font=('华文行楷', 20))
# 5.定位
label.grid()
# 6.输入框
entry = Entry(root, font=('华文行楷', 20))
# 7.进行定位
entry.grid(row=0, column=1)
# 8.下载按钮
button = Button(root, text='开始下载', font=('华文行楷', 15), command=get_url)
# 定位
button.grid(row=1, column=2)
# 显示界面
root.mainloop()